\chapter{Manual Técnico} % (fold)
\label{cha:mtecnico}

 \section{Dependencias de software}

 \subsection{Instalación de OpenCV en Linux} % (fold)
 \label{sub:ocvlin}

 OpenCV es una biblioteca que sirve para programar aplicaciones de visión artificial
 por computadora en tiempo real, la cual fue desarrollada en C++ y cuenta con varias
 interfaces para usarla, entre ellas, una para Python.

 Para instalar OpenCV, hay que satisfacer algunas dependencias, las cuales darán
 soporte a la hora de leer y escribir imágenes y dibujarlas en pantalla, también
 proporcionand algunas herramientas que son necesarias para utlizar OpenCV.

 Los comandos necesarios para tener instaladas las dependencias de OpenCV, se muestran
 en el listado~\ref{lst:instOCV01}

\begin{lstlisting}[style=consola, numbers=none, label=lst:instOCV01,
  caption=Instalando dependencias para OpenCV.]
$ sudo apt-get -y install build-essential libgtk2.0-dev libjpeg62-dev \
libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy \
libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev \
libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev
\end{lstlisting}

Es necesario obtener y compilar el código fuente de ffmpeg, para que los archivos
de video funcionen apropiadamente con OpenCV, ver listado~\ref{lst:ffmpeg}

\begin{lstlisting}[style=consola, numbers=none, label=lst:ffmpeg,
  caption=Instalando dependencias para OpenCV: Biblioteca ffmpeg.]
$ cd ~
$ wget http://ffmpeg.org/releases/ffmpeg-0.7-rc1.tar.gz
$ tar -xvzf ffmpeg-0.7-rc1.tar.gz
$ ./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc \
--enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb \
--enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab \
--enable-swscale --enable-shared
$ make
$ sudo make install
\end{lstlisting}

Acto seguido, se descarga el código fuente de OpenCV 2.2 (listado~\ref{lst:dwlocv}).

\begin{lstlisting}[style=consola, numbers=none, label=lst:dwlocv,
  caption=Descargano OpenCV.]
$ cd ~
$ wget \
http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2
$ tar jxvf OpenCV-2.2.0.tar.bz2
$ cd OpenCV-2.2.0
\end{lstlisting}

Hay que generar el Makefile utilizando cmake. Aquí­ podemos definir cuales partes de
OpenCV queremos compilar. Dado que queremos utilizar Python y TBB con OpenCV
entonces aquí­ es donde ajustamos los valores apropiados para ello.
Con el siguiente comando creamos el Makefile apropiado (listado~\ref{lst:make}).

\begin{lstlisting}[style=consola, numbers=none, label=lst:make,
  caption=Creando un makefile para compilar OpenCV.]
$ cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=OFF \
-D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -BUILD_EXAMPLES=ON .
\end{lstlisting}

Nota: El punto al final de la línea indica que debe ser en el directorio actual.
El siguiente paso es verificar que el comando de arriba no produzca errores y en particular
que reporte FFMPEG con el valor 1. Si este no es el caso no se podrán leer o escribir videos.
También se tiene que verificar que el valor de Use TBB sea YES, si cualquier cosa falla, es
necesario regresar y corregir los errores. Después se tiene que ejecutar nuevamente cmake.
En este paso ya se puede compilar e instalar OpenCV:

\begin{lstlisting}[style=consola, numbers=none, label=lst:mkinst,
  caption=Compilando e instalando OpenCV.]
$ make
$ sudo make install
\end{lstlisting}

Se tiene que configurar OpenCV, para esto se tiene que abrir el archivo opencv.conf:

\begin{lstlisting}[style=consola, numbers=none, label=lst:conf01,
  caption=Configurando OpenCV.]
$ sudo gedit /etc/ld.co.conf.d/opencv.conf
\end{lstlisting}

Se agrega la siguiente línea al final del archivo ( tal vez el archivo está vacío) y guardar:

\begin{lstlisting}[style=consola, numbers=none, label=lst:conf02,
  caption=Configurando OpenCV.]
/usr/local/lib
\end{lstlisting}

Para configurar la biblioteca se ejecuta el siguiente comando:

\begin{lstlisting}[style=consola, numbers=none, label=lst:conf03,
  caption=Configurando OpenCV.]
$ sudo ldconfig
\end{lstlisting}

Ahora se tiene que abrir el siguiente archivo:

\begin{lstlisting}[style=consola, numbers=none, label=lst:conf04,
  caption=Configurando OpenCV.]
$ sudo gedit /etc/bash.bashrc
\end{lstlisting}

Se agregan las siguientes líneas al final del archivo y guardar:

\begin{lstlisting}[style=consola, numbers=none, label=lst:conf05,
  caption=Configurando OpenCV.]
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
\end{lstlisting}

Finalmente se necesita reiniciar la computadora.

Para configurar Python con OpenCV, hay que compilar el archivo cv.so en el lugar correcto.
Se puede hacer ejecutando el siguiente comando:

\begin{lstlisting}[style=consola, numbers=none, label=lst:conf06,
  caption=Configurando OpenCV.]
$ sudo cp /usr/local/lib/python2.7/site-packages/cv.so \
/usr/local/lib/python2.7/dist-packages/cv.so
\end{lstlisting}

Una vez hecho esto tendremos instalado OpenCv2.2 con soporte para Python y TBB.

 % subsection ocvlin (end)

 \section{Código fuente}

\lstinputlisting{src/principalmod.py}
 
%\begin{lstlisting}[style=python, numbers=none, label=lst:comandohelp,
%print 'Hola mundo'
%ans = 5 + 5.0
%\end{lstlisting}


% chapter mtecnico (end)
